package cn.melonlib.cores.model.anno;

import java.lang.annotation.*;

/**
 * 标注字段，此注解一般不需要被定义，不被定义时则使用字段默认配置属性，只有字段有特殊定义时需要特别配置。
 */
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModelField {

    /**
     * 字段名称，不定义则使用字段本身名称，定义则改用此名称
     */
    String value() default "";

    /**
     * 定义为必填字段，默认不需要填写，如果定义ModelFile注解则使用此注解忽略ModelComment内注解，否则使用ModelComment注解
     */
    boolean required() default false;

    /**
     * 是否忽略此字段，如果定义此字段，则在代码生成器中忽略此字段定义。
     */
    boolean ignore() default false;

    /**
     * 字段值是否加密存储，一些用户隐私的数据，例如密码、身份证号等等敏感信息，要求对数据进行加密，加密的数据不能用于查询筛选。(只支持字符串)
     */
    boolean encryptionStore() default false;

    /**
     * 字段是否加密传输，保证数据安全传送
     * @return
     */
    boolean encryptionTransfer() default false;


}
